package com.sinux.generality.provider.demo.util;

import org.springframework.util.DigestUtils;

import java.nio.charset.StandardCharsets;
import java.util.Random;

/**
 * <p>PasswordUtils
 *
 * @author Jasper
 * @version 1.0
 * @date 2023-05-07
 */

public class PasswordUtils {

    /**
     * md5 加密算法
     * @param password
     * @return
     */
    public static String getMd5Encryption(String password){
        return DigestUtils.md5DigestAsHex((password).getBytes(StandardCharsets.UTF_8));
    }

    /**
     * md5 + salt 加密算法 (推荐)
     * @param password
     * @param salt
     * @return
     */
    public static String getMD5Encryption(String password, String salt){
        //密码md5 + 盐加密
        return DigestUtils.md5DigestAsHex((password + salt).getBytes(StandardCharsets.UTF_8));
    }

    /**
     * 生成随机盐
     * @return
     */
    public static String getSalt(){
        String str="zxcvbnmasdfghjklqwertyuiopZXCVBNMASDFGHJKLQWERTYUIOP1234567890,.<>:?";
        Random random = new Random();
        StringBuffer stringBuffer = new StringBuffer();
        //循环6次，共取出6个随机字符
        for (int i = 0; i < 6; i++) {
            //每次生成一个67以内的随机数
            int number = random.nextInt(68);
            //生成的随机数作为 str 字符串的下标；从 str 中取出随机字符后追加到 stringBuffer
            stringBuffer.append(str.charAt(number));
        }
        return stringBuffer.toString();
    }

}
